/* Copyright (c) 2025 Beijing Semidrive Technology Corporation
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** *****************************************************************************************************
 *  \file     Dio_Irq.h                                                                                 *
 *  \brief    This file contains interface header for DIO MCAL driver.                                  *
 *                                                                                                      *
 * <table>                                                                                              *
 * <tr><th>Date                 <th>Version                                                             *
 * <tr><td>2023/07/06           <td>1.0.0                                                               *
 * </table>                                                                                             *
 *******************************************************************************************************/
#ifndef DIO_IRQ_H
#define DIO_IRQ_H

#ifdef __cplusplus
extern "C" {
#endif

#include "Compiler.h"
#include "Compiler_Cfg.h"

/********************************************************************************************************
 *                                  Global Function Declarations                                        *
 *******************************************************************************************************/
/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq1Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq1Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq2Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq2Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq3Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq3Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq4Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq4Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq5Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq5Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq6Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq6Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq7Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq7Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq8Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq8Handler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq9Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq9Handler);


/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq10Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq10Handler);


/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq11Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq11Handler);


/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq12Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq12Handler);


/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : void DIO_Irq13Handler(void)
 *
 * Service ID[hex]    : None
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_Irq13Handler);


/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : ISR(DIO_SF1IrqHandler)
 *
 * Service ID[hex]    : 0x13
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_SF1IrqHandler);

#if defined(E3650)
/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : ISR(DIO_SF2IrqHandler)
 *
 * Service ID[hex]    : 0x14
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_SF2IrqHandler);

/** *****************************************************************************************************
 * \brief Dio captures external levels and triggers interrupts.
 *
 * \verbatim
 * Syntax             : ISR(DIO_LPIrqHandler)
 *
 * Service ID[hex]    : 0x15
 *
 * Sync/Async         : Synchronous
 *
 * Reentrancy         : Non reentrant
 *
 * Parameters (in)    : None
 *
 * Parameters (inout) : None
 *
 * Parameters (out)   : None
 *
 * Return value       : None
 *
 * Description        : When the CPU enters hib/sleep mode,
 *                      it can only be awakened through asynchronous interrupts.
 * \endverbatim
 *******************************************************************************************************/
ISR(DIO_LPIrqHandler);
#endif /** #if defined(E3650) */

#ifdef __cplusplus
}
#endif

#endif /* DIO_IRQ_H */

/* End of file */
